package com.ysd.shiro.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.ysd.shiro.entity.User;

@Mapper
public interface UserBackMapper {
	
	/**
	 * 后台的登录验证
	 * @param user
	 * @return
	 */
	public User backLogin(@Param("name")String name,@Param("password")String password);
	
	/**
	 * 查询出所有的用户信息
	 * @return
	 */
	public List<User> selectAllUser(@Param("setValue")int setValue,@Param("limit")int limit,@Param("name")String name,@Param("gender")String gender,@Param("isAdmin") String isAdmin);
	/**
	 * 查询出user表里的总条数
	 * @return
	 */
	public int selectUserCounts(@Param("name")String name,@Param("gender")String gender,@Param("isAdmin")String isAdmin);
	/**
	 * 添加一个用户
	 * @param user
	 * @return
	 */
	public int insertUser(User user);
	/**
	 * 根据id修改一个用户
	 * @param user
	 * @return
	 */
	public int updateUserById(User user);
	/**
	 * 根据ids批量的删除用户
	 * @param ids
	 * @return
	 */
	public int deleteAllUserByIds(List<String> ids);
	/**
	 * 根据id删除一个用户
	 * @param id
	 * @return
	 */
	public int deleteUserById(int id);
	/**
	 * 用户登录时更改最后的登录时间
	 * @param date
	 * @param id
	 */
	public void updateUserLastLoginTimeById(@Param("date")String date, @Param("id")Integer id);
	
	/**
	 * 查询登录时输入的用户名是否存在
	 * @param name
	 * @return
	 */
	public User selectUserByNameVerifyError(@Param("name")String name);

	/**
	 * 修改用户的是否锁定账号状态
	 * @param id
	 * @param number
	 * @return
	 */
	public Integer updateUserIsLockById(@Param("userId")Integer userId, @Param("number")Integer number);

	/**
	 * 修改用户账户是否成为管理员的状态
	 * @param id
	 * @param number
	 * @return
	 */
	public Integer updateUserAdminStatusById(@Param("userId")Integer userId, @Param("number")Integer number);

	/**
	 * 查询出所有的用户信息用于在订单页下拉框展示
	 * @return
	 */
	public List<User> selectAllUserWitchOrderIndoSelect();

	/**
	 * 修改管理员的错误次数根据id
	 * @param id
	 * @param errorCount
	 */
	public void updateUserErrorCountById(@Param("id")Integer id, @Param("errorCount")int errorCount, @Param("datestr")String datestr);

	/**
	 * 在个人信息页编辑基础的登录者用户信息
	 * @param user
	 * @return
	 */
	public Integer updateUserBasicInformationById(User user);

	/**
	 * 查询出所有用户的信息根据name来查询如查询出有者给提示信息用户名不能重复
	 * @param newName
	 * @return
	 */
	public List<User> selectAllUserByNameWitchVerify(@Param("name")String newName);

	/**
	 * {前台}登录验证
	 * @param name
	 * @param password
	 * @return
	 */
	public User frontLogin(@Param("name")String name, @Param("password")String password);
	
	public List<User> userMapper(User user);
	
	//按照id进行查询
	public User findUserById(int id);
	
}
